<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Doxygen: pcl::ihs::ICP类 参考</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Doxygen
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- 制作者 Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'搜索','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','搜索');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(document).ready(function(){initNavTree('classpcl_1_1ihs_1_1_i_c_p.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-types">Public 类型</a> &#124;
<a href="#pub-methods">Public 成员函数</a> &#124;
<a href="#pri-types">Private 类型</a> &#124;
<a href="#pri-methods">Private 成员函数</a> &#124;
<a href="#pri-attribs">Private 属性</a> &#124;
<a href="classpcl_1_1ihs_1_1_i_c_p-members.html">所有成员列表</a>  </div>
  <div class="headertitle">
<div class="title">pcl::ihs::ICP类 参考</div>  </div>
</div><!--header-->
<div class="contents">

<p>Iterative Closest Point registration.  
 <a href="classpcl_1_1ihs_1_1_i_c_p.html#details">更多...</a></p>

<p><code>#include &lt;<a class="el" href="apps_2in__hand__scanner_2include_2pcl_2apps_2in__hand__scanner_2icp_8h_source.html">icp.h</a>&gt;</code></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public 类型</h2></td></tr>
<tr class="memitem:ad5c16e313bbfc5d53c12acfa7148b934"><td class="memItemLeft" align="right" valign="top"><a id="ad5c16e313bbfc5d53c12acfa7148b934"></a>
typedef <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_normal.html">pcl::PointXYZRGBNormal</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointXYZRGBNormal</b></td></tr>
<tr class="separator:ad5c16e313bbfc5d53c12acfa7148b934"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8bc5d0d3028e8fd32d87364ffcc1b981"><td class="memItemLeft" align="right" valign="top"><a id="a8bc5d0d3028e8fd32d87364ffcc1b981"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_x_y_z_r_g_b_normal.html">PointXYZRGBNormal</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CloudXYZRGBNormal</b></td></tr>
<tr class="separator:a8bc5d0d3028e8fd32d87364ffcc1b981"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a90d0a919ab7569041a89e55aa61fb699"><td class="memItemLeft" align="right" valign="top"><a id="a90d0a919ab7569041a89e55aa61fb699"></a>
typedef CloudXYZRGBNormal::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>CloudXYZRGBNormalPtr</b></td></tr>
<tr class="separator:a90d0a919ab7569041a89e55aa61fb699"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a971c1802e245b9a8694a298f45d2f7ff"><td class="memItemLeft" align="right" valign="top"><a id="a971c1802e245b9a8694a298f45d2f7ff"></a>
typedef CloudXYZRGBNormal::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>CloudXYZRGBNormalConstPtr</b></td></tr>
<tr class="separator:a971c1802e245b9a8694a298f45d2f7ff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac1e1fbc8a1756dbdf5ad1c4f8dd62d4"><td class="memItemLeft" align="right" valign="top"><a id="aac1e1fbc8a1756dbdf5ad1c4f8dd62d4"></a>
typedef pcl::ihs::Mesh&#160;</td><td class="memItemRight" valign="bottom"><b>Mesh</b></td></tr>
<tr class="separator:aac1e1fbc8a1756dbdf5ad1c4f8dd62d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4186653c0f66b8483bab6fd796b5895"><td class="memItemLeft" align="right" valign="top"><a id="ad4186653c0f66b8483bab6fd796b5895"></a>
typedef pcl::ihs::MeshPtr&#160;</td><td class="memItemRight" valign="bottom"><b>MeshPtr</b></td></tr>
<tr class="separator:ad4186653c0f66b8483bab6fd796b5895"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a76d842d2aa3bd81b5b6fdbd079c761ac"><td class="memItemLeft" align="right" valign="top"><a id="a76d842d2aa3bd81b5b6fdbd079c761ac"></a>
typedef pcl::ihs::MeshConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>MeshConstPtr</b></td></tr>
<tr class="separator:a76d842d2aa3bd81b5b6fdbd079c761ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public 成员函数</h2></td></tr>
<tr class="memitem:ade26e4ebe2bf80dd0da14fbbb1d474d1"><td class="memItemLeft" align="right" valign="top"><a id="ade26e4ebe2bf80dd0da14fbbb1d474d1"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#ade26e4ebe2bf80dd0da14fbbb1d474d1">ICP</a> ()</td></tr>
<tr class="memdesc:ade26e4ebe2bf80dd0da14fbbb1d474d1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor <br /></td></tr>
<tr class="separator:ade26e4ebe2bf80dd0da14fbbb1d474d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8315321d8f22c0e86d4ee55f8f4493b4"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#a8315321d8f22c0e86d4ee55f8f4493b4">findTransformation</a> (const MeshConstPtr &amp;mesh_model, const CloudXYZRGBNormalConstPtr &amp;cloud_data, const Eigen::Matrix4f &amp;T_init, Eigen::Matrix4f &amp;T_final)</td></tr>
<tr class="memdesc:a8315321d8f22c0e86d4ee55f8f4493b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Find the transformation that aligns the data cloud (source) to the model mesh (target).  <a href="classpcl_1_1ihs_1_1_i_c_p.html#a8315321d8f22c0e86d4ee55f8f4493b4">更多...</a><br /></td></tr>
<tr class="separator:a8315321d8f22c0e86d4ee55f8f4493b4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a78d1f3d03d4790c4fb36d1058951a7ae"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#a78d1f3d03d4790c4fb36d1058951a7ae">setEpsilon</a> (const float epsilon)</td></tr>
<tr class="memdesc:a78d1f3d03d4790c4fb36d1058951a7ae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convergence is detected when the change of the fitness between the current and previous iteration becomes smaller than the given epsilon (set in cm^2). The fitness is the mean squared euclidean distance between corresponding points.  <a href="classpcl_1_1ihs_1_1_i_c_p.html#a78d1f3d03d4790c4fb36d1058951a7ae">更多...</a><br /></td></tr>
<tr class="separator:a78d1f3d03d4790c4fb36d1058951a7ae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08700e1dd56ecfb47761a40668280ff9"><td class="memItemLeft" align="right" valign="top"><a id="a08700e1dd56ecfb47761a40668280ff9"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>getEpsilon</b> () const</td></tr>
<tr class="separator:a08700e1dd56ecfb47761a40668280ff9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a7fe5381a7f6db8bfc85cafcad88bd3a4"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#a7fe5381a7f6db8bfc85cafcad88bd3a4">setMaxIterations</a> (const unsigned int max_iter)</td></tr>
<tr class="memdesc:a7fe5381a7f6db8bfc85cafcad88bd3a4"><td class="mdescLeft">&#160;</td><td class="mdescRight">The registration fails if the number of iterations exceeds the maximum number of iterations.  <a href="classpcl_1_1ihs_1_1_i_c_p.html#a7fe5381a7f6db8bfc85cafcad88bd3a4">更多...</a><br /></td></tr>
<tr class="separator:a7fe5381a7f6db8bfc85cafcad88bd3a4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aec1853234b6f9545678525aac270bc0c"><td class="memItemLeft" align="right" valign="top"><a id="aec1853234b6f9545678525aac270bc0c"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxIterations</b> () const</td></tr>
<tr class="separator:aec1853234b6f9545678525aac270bc0c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a1333c4ce712ccc428ced32af5c40f313"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#a1333c4ce712ccc428ced32af5c40f313">setMinOverlap</a> (const float overlap)</td></tr>
<tr class="memdesc:a1333c4ce712ccc428ced32af5c40f313"><td class="mdescLeft">&#160;</td><td class="mdescRight">The registration fails at the state of convergence if the overlap between the model and data shape is smaller than a minimum overlap. The overlap is the fraction of correspondences (after rejection) to the initial number of data points.  <a href="classpcl_1_1ihs_1_1_i_c_p.html#a1333c4ce712ccc428ced32af5c40f313">更多...</a><br /></td></tr>
<tr class="separator:a1333c4ce712ccc428ced32af5c40f313"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a668ccabf29e986cbfeeaf182190b53dc"><td class="memItemLeft" align="right" valign="top"><a id="a668ccabf29e986cbfeeaf182190b53dc"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>getMinOverlap</b> () const</td></tr>
<tr class="separator:a668ccabf29e986cbfeeaf182190b53dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:ac7a725ed952984e2a65b26aa950e5f63"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#ac7a725ed952984e2a65b26aa950e5f63">setMaxFitness</a> (const float fitness)</td></tr>
<tr class="memdesc:ac7a725ed952984e2a65b26aa950e5f63"><td class="mdescLeft">&#160;</td><td class="mdescRight">The registration fails at the state of convergence if the fitness is bigger than this threshold (set in cm^2)  <a href="classpcl_1_1ihs_1_1_i_c_p.html#ac7a725ed952984e2a65b26aa950e5f63">更多...</a><br /></td></tr>
<tr class="separator:ac7a725ed952984e2a65b26aa950e5f63"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49d6aaac72da31e27a11e58439813e99"><td class="memItemLeft" align="right" valign="top"><a id="a49d6aaac72da31e27a11e58439813e99"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxFitness</b> () const</td></tr>
<tr class="separator:a49d6aaac72da31e27a11e58439813e99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a7f59c333feba7553e502480b62ecc089"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#a7f59c333feba7553e502480b62ecc089">setCorrespondenceRejectionFactor</a> (const float factor)</td></tr>
<tr class="memdesc:a7f59c333feba7553e502480b62ecc089"><td class="mdescLeft">&#160;</td><td class="mdescRight">Correspondences are rejected if the squared distance is above a threshold. This threshold is initialized with infinity (all correspondences are accepted in the first iteration). The threshold of the next iterations is set to the fitness of the current iteration multiplied by the factor set by this method.  <a href="classpcl_1_1ihs_1_1_i_c_p.html#a7f59c333feba7553e502480b62ecc089">更多...</a><br /></td></tr>
<tr class="separator:a7f59c333feba7553e502480b62ecc089"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a77561fb65f088364f6eb034b628aa6b5"><td class="memItemLeft" align="right" valign="top"><a id="a77561fb65f088364f6eb034b628aa6b5"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>getCorrespondenceRejectionFactor</b> () const</td></tr>
<tr class="separator:a77561fb65f088364f6eb034b628aa6b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader"></div></td></tr>
<tr class="memitem:a9f98c07c5114dc5b9644e0930d86ea5e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#a9f98c07c5114dc5b9644e0930d86ea5e">setMaxAngle</a> (const float angle)</td></tr>
<tr class="memdesc:a9f98c07c5114dc5b9644e0930d86ea5e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Correspondences are rejected if the angle between the normals is bigger than this threshold. Set in degrees.  <a href="classpcl_1_1ihs_1_1_i_c_p.html#a9f98c07c5114dc5b9644e0930d86ea5e">更多...</a><br /></td></tr>
<tr class="separator:a9f98c07c5114dc5b9644e0930d86ea5e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2386065c98013a19f6489be29d4e2923"><td class="memItemLeft" align="right" valign="top"><a id="a2386065c98013a19f6489be29d4e2923"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>getMaxAngle</b> () const</td></tr>
<tr class="separator:a2386065c98013a19f6489be29d4e2923"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-types"></a>
Private 类型</h2></td></tr>
<tr class="memitem:a936478b101638d9ca734f57b18aa5cc5"><td class="memItemLeft" align="right" valign="top"><a id="a936478b101638d9ca734f57b18aa5cc5"></a>
typedef <a class="el" href="structpcl_1_1_point_normal.html">pcl::PointNormal</a>&#160;</td><td class="memItemRight" valign="bottom"><b>PointNormal</b></td></tr>
<tr class="separator:a936478b101638d9ca734f57b18aa5cc5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae2ab683effc1a4f0d2681f2604123c51"><td class="memItemLeft" align="right" valign="top"><a id="ae2ab683effc1a4f0d2681f2604123c51"></a>
typedef <a class="el" href="classpcl_1_1_point_cloud.html">pcl::PointCloud</a>&lt; <a class="el" href="structpcl_1_1_point_normal.html">PointNormal</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>CloudNormal</b></td></tr>
<tr class="separator:ae2ab683effc1a4f0d2681f2604123c51"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5f96f87ac2cdfd5fe6e6d8ab45a4e04a"><td class="memItemLeft" align="right" valign="top"><a id="a5f96f87ac2cdfd5fe6e6d8ab45a4e04a"></a>
typedef CloudNormal::Ptr&#160;</td><td class="memItemRight" valign="bottom"><b>CloudNormalPtr</b></td></tr>
<tr class="separator:a5f96f87ac2cdfd5fe6e6d8ab45a4e04a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a343233a7fa478b35a0518f151efcbbcd"><td class="memItemLeft" align="right" valign="top"><a id="a343233a7fa478b35a0518f151efcbbcd"></a>
typedef CloudNormal::ConstPtr&#160;</td><td class="memItemRight" valign="bottom"><b>CloudNormalConstPtr</b></td></tr>
<tr class="separator:a343233a7fa478b35a0518f151efcbbcd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acada08efa1faf6e51717194552b95cc0"><td class="memItemLeft" align="right" valign="top"><a id="acada08efa1faf6e51717194552b95cc0"></a>
typedef <a class="el" href="classpcl_1_1_kd_tree.html">pcl::KdTree</a>&lt; <a class="el" href="structpcl_1_1_point_normal.html">PointNormal</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTree</b></td></tr>
<tr class="separator:acada08efa1faf6e51717194552b95cc0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e5fc31e857bc0818dc0b95272c7fa27"><td class="memItemLeft" align="right" valign="top"><a id="a1e5fc31e857bc0818dc0b95272c7fa27"></a>
typedef boost::shared_ptr&lt; <a class="el" href="classpcl_1_1_kd_tree.html">KdTree</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreePtr</b></td></tr>
<tr class="separator:a1e5fc31e857bc0818dc0b95272c7fa27"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a216c61dd2cddaeefe50c48a9cb72eb07"><td class="memItemLeft" align="right" valign="top"><a id="a216c61dd2cddaeefe50c48a9cb72eb07"></a>
typedef boost::shared_ptr&lt; const <a class="el" href="classpcl_1_1_kd_tree.html">KdTree</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>KdTreeConstPtr</b></td></tr>
<tr class="separator:a216c61dd2cddaeefe50c48a9cb72eb07"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-methods"></a>
Private 成员函数</h2></td></tr>
<tr class="memitem:a4be17ccf31b43b9423e735b6ec27ad8b"><td class="memItemLeft" align="right" valign="top">CloudNormalConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#a4be17ccf31b43b9423e735b6ec27ad8b">selectModelPoints</a> (const MeshConstPtr &amp;mesh_model, const Eigen::Matrix4f &amp;T_inv) const</td></tr>
<tr class="memdesc:a4be17ccf31b43b9423e735b6ec27ad8b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects the model points that are pointing towards to the camera (data coordinate system = camera coordinate system).  <a href="classpcl_1_1ihs_1_1_i_c_p.html#a4be17ccf31b43b9423e735b6ec27ad8b">更多...</a><br /></td></tr>
<tr class="separator:a4be17ccf31b43b9423e735b6ec27ad8b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad88efd31df65c78fbafee5d7d88d8c0f"><td class="memItemLeft" align="right" valign="top">CloudNormalConstPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#ad88efd31df65c78fbafee5d7d88d8c0f">selectDataPoints</a> (const CloudXYZRGBNormalConstPtr &amp;cloud_data) const</td></tr>
<tr class="memdesc:ad88efd31df65c78fbafee5d7d88d8c0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Selects the valid data points. The input cloud is organized -&gt; contains nans which are removed  <a href="classpcl_1_1ihs_1_1_i_c_p.html#ad88efd31df65c78fbafee5d7d88d8c0f">更多...</a><br /></td></tr>
<tr class="separator:ad88efd31df65c78fbafee5d7d88d8c0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad90a0ab18c190718ddebdf6832d69640"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html#ad90a0ab18c190718ddebdf6832d69640">minimizePointPlane</a> (const <a class="el" href="classpcl_1_1_point_cloud.html">CloudNormal</a> &amp;cloud_source, const <a class="el" href="classpcl_1_1_point_cloud.html">CloudNormal</a> &amp;cloud_target, Eigen::Matrix4f &amp;T) const</td></tr>
<tr class="memdesc:ad90a0ab18c190718ddebdf6832d69640"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finds the transformation that minimizes the point to plane distance from the source to the target cloud. The input clouds must be arranged to have one to one correspondences (point 0 in source corresponds to point 0 in target, point 1 in source to point 1 in target and so on).  <a href="classpcl_1_1ihs_1_1_i_c_p.html#ad90a0ab18c190718ddebdf6832d69640">更多...</a><br /></td></tr>
<tr class="separator:ad90a0ab18c190718ddebdf6832d69640"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pri-attribs"></a>
Private 属性</h2></td></tr>
<tr class="memitem:a1961deb6baf689cae91785a3677a4d2d"><td class="memItemLeft" align="right" valign="top"><a id="a1961deb6baf689cae91785a3677a4d2d"></a>
KdTreePtr&#160;</td><td class="memItemRight" valign="bottom"><b>kd_tree_</b></td></tr>
<tr class="separator:a1961deb6baf689cae91785a3677a4d2d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af016b03c95b6e1748b1fce33e6eb7fba"><td class="memItemLeft" align="right" valign="top"><a id="af016b03c95b6e1748b1fce33e6eb7fba"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>epsilon_</b></td></tr>
<tr class="separator:af016b03c95b6e1748b1fce33e6eb7fba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8e4d860215c234c5128d3eca6dc10e99"><td class="memItemLeft" align="right" valign="top"><a id="a8e4d860215c234c5128d3eca6dc10e99"></a>
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>max_iterations_</b></td></tr>
<tr class="separator:a8e4d860215c234c5128d3eca6dc10e99"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab7fb65725f8db0cc828227722b20b6ed"><td class="memItemLeft" align="right" valign="top"><a id="ab7fb65725f8db0cc828227722b20b6ed"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>min_overlap_</b></td></tr>
<tr class="separator:ab7fb65725f8db0cc828227722b20b6ed"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac69d81162f9b9d021be162f2acce99d8"><td class="memItemLeft" align="right" valign="top"><a id="ac69d81162f9b9d021be162f2acce99d8"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>max_fitness_</b></td></tr>
<tr class="separator:ac69d81162f9b9d021be162f2acce99d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1e83cddb2d4bb23137a4a593ba1a654"><td class="memItemLeft" align="right" valign="top"><a id="ad1e83cddb2d4bb23137a4a593ba1a654"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>factor_</b></td></tr>
<tr class="separator:ad1e83cddb2d4bb23137a4a593ba1a654"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab7959cc5eecf27b5e615b692b70e927"><td class="memItemLeft" align="right" valign="top"><a id="aab7959cc5eecf27b5e615b692b70e927"></a>
float&#160;</td><td class="memItemRight" valign="bottom"><b>max_angle_</b></td></tr>
<tr class="separator:aab7959cc5eecf27b5e615b692b70e927"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">详细描述</h2>
<div class="textblock"><p>Iterative Closest Point registration. </p>
<dl class="section author"><dt>作者</dt><dd>Martin Saelzle </dd></dl>
</div><h2 class="groupheader">成员函数说明</h2>
<a id="a8315321d8f22c0e86d4ee55f8f4493b4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8315321d8f22c0e86d4ee55f8f4493b4">&#9670;&nbsp;</a></span>findTransformation()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::ihs::ICP::findTransformation </td>
          <td>(</td>
          <td class="paramtype">const MeshConstPtr &amp;&#160;</td>
          <td class="paramname"><em>mesh_model</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const CloudXYZRGBNormalConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud_data</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Matrix4f &amp;&#160;</td>
          <td class="paramname"><em>T_init</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Matrix4f &amp;&#160;</td>
          <td class="paramname"><em>T_final</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Find the transformation that aligns the data cloud (source) to the model mesh (target). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mesh_model</td><td>Model mesh (target). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud_data</td><td>Data cloud (source). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">T_init</td><td>Initial guess for the transformation. \paran[out] T_final The computed transformation. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>true if success. </dd></dl>

</div>
</div>
<a id="ad90a0ab18c190718ddebdf6832d69640"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad90a0ab18c190718ddebdf6832d69640">&#9670;&nbsp;</a></span>minimizePointPlane()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool pcl::ihs::ICP::minimizePointPlane </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">CloudNormal</a> &amp;&#160;</td>
          <td class="paramname"><em>cloud_source</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classpcl_1_1_point_cloud.html">CloudNormal</a> &amp;&#160;</td>
          <td class="paramname"><em>cloud_target</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Eigen::Matrix4f &amp;&#160;</td>
          <td class="paramname"><em>T</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Finds the transformation that minimizes the point to plane distance from the source to the target cloud. The input clouds must be arranged to have one to one correspondences (point 0 in source corresponds to point 0 in target, point 1 in source to point 1 in target and so on). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud_source</td><td>Source cloud (data). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud_target</td><td>Target cloud (model). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">T</td><td>The computed transformation. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd>true if success </dd></dl>

</div>
</div>
<a id="ad88efd31df65c78fbafee5d7d88d8c0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad88efd31df65c78fbafee5d7d88d8c0f">&#9670;&nbsp;</a></span>selectDataPoints()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">CloudNormalConstPtr pcl::ihs::ICP::selectDataPoints </td>
          <td>(</td>
          <td class="paramtype">const CloudXYZRGBNormalConstPtr &amp;&#160;</td>
          <td class="paramname"><em>cloud_data</em></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Selects the valid data points. The input cloud is organized -&gt; contains nans which are removed </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">cloud_data</td><td>Input cloud. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="class_cloud.html" title="A wrapper which allows to use any implementation of cloud provided by a third-party library.">Cloud</a> containing the selected points. </dd></dl>

</div>
</div>
<a id="a4be17ccf31b43b9423e735b6ec27ad8b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4be17ccf31b43b9423e735b6ec27ad8b">&#9670;&nbsp;</a></span>selectModelPoints()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">CloudNormalConstPtr pcl::ihs::ICP::selectModelPoints </td>
          <td>(</td>
          <td class="paramtype">const MeshConstPtr &amp;&#160;</td>
          <td class="paramname"><em>mesh_model</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const Eigen::Matrix4f &amp;&#160;</td>
          <td class="paramname"><em>T_inv</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Selects the model points that are pointing towards to the camera (data coordinate system = camera coordinate system). </p>
<dl class="params"><dt>参数</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">mesh_model</td><td>Input mesh. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">T_inv</td><td>Transformation that brings the model mesh into the camera coordinate system. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>返回</dt><dd><a class="el" href="class_cloud.html" title="A wrapper which allows to use any implementation of cloud provided by a third-party library.">Cloud</a> containing the selected points (the connectivity information of the mesh is currently not used during the registration). </dd></dl>

</div>
</div>
<a id="a7f59c333feba7553e502480b62ecc089"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7f59c333feba7553e502480b62ecc089">&#9670;&nbsp;</a></span>setCorrespondenceRejectionFactor()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::ihs::ICP::setCorrespondenceRejectionFactor </td>
          <td>(</td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>factor</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Correspondences are rejected if the squared distance is above a threshold. This threshold is initialized with infinity (all correspondences are accepted in the first iteration). The threshold of the next iterations is set to the fitness of the current iteration multiplied by the factor set by this method. </p>
<dl class="section note"><dt>注解</dt><dd>Must be greater or equal one. Smaller values are set to one. </dd></dl>

</div>
</div>
<a id="a78d1f3d03d4790c4fb36d1058951a7ae"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a78d1f3d03d4790c4fb36d1058951a7ae">&#9670;&nbsp;</a></span>setEpsilon()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::ihs::ICP::setEpsilon </td>
          <td>(</td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>epsilon</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convergence is detected when the change of the fitness between the current and previous iteration becomes smaller than the given epsilon (set in cm^2). The fitness is the mean squared euclidean distance between corresponding points. </p>
<dl class="section note"><dt>注解</dt><dd>Only accepted if it is greater than 0. </dd></dl>

</div>
</div>
<a id="a9f98c07c5114dc5b9644e0930d86ea5e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f98c07c5114dc5b9644e0930d86ea5e">&#9670;&nbsp;</a></span>setMaxAngle()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::ihs::ICP::setMaxAngle </td>
          <td>(</td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>angle</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Correspondences are rejected if the angle between the normals is bigger than this threshold. Set in degrees. </p>
<dl class="section note"><dt>注解</dt><dd>Must be between 180 degrees and 0. Values outside this range are clamped to the nearest valid value. </dd></dl>

</div>
</div>
<a id="ac7a725ed952984e2a65b26aa950e5f63"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac7a725ed952984e2a65b26aa950e5f63">&#9670;&nbsp;</a></span>setMaxFitness()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::ihs::ICP::setMaxFitness </td>
          <td>(</td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>fitness</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The registration fails at the state of convergence if the fitness is bigger than this threshold (set in cm^2) </p>
<dl class="section note"><dt>注解</dt><dd>Must be greater than zero. </dd></dl>

</div>
</div>
<a id="a7fe5381a7f6db8bfc85cafcad88bd3a4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7fe5381a7f6db8bfc85cafcad88bd3a4">&#9670;&nbsp;</a></span>setMaxIterations()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::ihs::ICP::setMaxIterations </td>
          <td>(</td>
          <td class="paramtype">const unsigned int&#160;</td>
          <td class="paramname"><em>max_iter</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The registration fails if the number of iterations exceeds the maximum number of iterations. </p>
<dl class="section note"><dt>注解</dt><dd>Must be greater than 0. Smaller values are set to 1. </dd></dl>

</div>
</div>
<a id="a1333c4ce712ccc428ced32af5c40f313"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1333c4ce712ccc428ced32af5c40f313">&#9670;&nbsp;</a></span>setMinOverlap()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void pcl::ihs::ICP::setMinOverlap </td>
          <td>(</td>
          <td class="paramtype">const float&#160;</td>
          <td class="paramname"><em>overlap</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>The registration fails at the state of convergence if the overlap between the model and data shape is smaller than a minimum overlap. The overlap is the fraction of correspondences (after rejection) to the initial number of data points. </p>
<dl class="section note"><dt>注解</dt><dd>Must be between zero and one. Values outside this range are clamped to the nearest valid value. </dd></dl>

</div>
</div>
<hr/>该类的文档由以下文件生成:<ul>
<li>apps/in_hand_scanner/include/pcl/apps/in_hand_scanner/<a class="el" href="apps_2in__hand__scanner_2include_2pcl_2apps_2in__hand__scanner_2icp_8h_source.html">icp.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>pcl</b></li><li class="navelem"><b>ihs</b></li><li class="navelem"><a class="el" href="classpcl_1_1ihs_1_1_i_c_p.html">ICP</a></li>
    <li class="footer">制作者 <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
  </ul>
</div>
</body>
</html>
